﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Aga.GestionDeArchivos.Domain;
using System.Data.Objects.DataClasses;
using Aga.GestionDeArchivos.Domain.Entities;

namespace Aga.GestionDeArchivos.Storage
{
    /// <summary>
    /// Manage the current instances of the repositories
    /// </summary>
    public static class RepositoryFactory
    {
        private static AgaEntities context;
        private static AgaEntities Context
        {
            get
            {
                if (context == null)
                {
                    context = new AgaEntities();
                }

                return context;
            }
        }

        public static UserRepository CreateUserRepository()
        {
            return new UserRepository(Context);
        }

        public static RoleRepository CreateRoleRepository()
        {
            return new RoleRepository(Context);
        }

        public static ClienteRepository CreateClienteRepository()
        {
            return new ClienteRepository(Context);
        }

        public static DepositoRepository CreateDepositoRepository()
        {
            return new DepositoRepository(Context);
        }

        public static EstanteriaRepository CreateEstanteriaRepository()
        {
            return new EstanteriaRepository(Context);
        }

        public static UbicacionRepository CreateUbicacionRepository()
        {
            return new UbicacionRepository(Context);
        }

        public static CajaClienteRepository CreateCajaClienteRepository()
        {
            return new CajaClienteRepository(Context);
        }

        public static MovimientoRepository CreateMovimientoRepository()
        {
            return new MovimientoRepository(Context);
        }

        public static RemitoRepository CreateRemitoRepository()
        {
            return new RemitoRepository(Context);
        }

        public static ItemRepository CreateItemRepository()
        {
            return new ItemRepository(Context);
        }

        public static ReimpresionRepository CreateReimpresionRepository()
        {
            return new ReimpresionRepository(Context);
        }

    }
}
